//
//  MainVc.swift
//  WeiBo14
//
//  Created by rzj on 16/3/9.
//  Copyright © 2016年 rzj. All rights reserved.
//

import UIKit

class MainVc: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

        setUpUI()
        
    }

    func setUpUI() {
    
        let tabBar = TabBar()
        
        //self.tabBar  = tabBar 由于属性只读 使用KVC更换自定义的tabBar
        self.setValue(tabBar, forKeyPath: "tabBar")
        
        /* composeButtonClickCloure闭包强引用self->TabBar强引用闭包->控制器强引用
        TabBar 造成循环引用 */
        //    tabBar.composeButtonClickCloure = {
        //
        //        print("弹出控制器\(self)")
        //
        //    }
        
        //SWift解决循环引用:1,[weak self] in 在闭包中是可选值 其指向对象销毁 闭包中的self置为nil 相当于oc的__weak 2,[unowned self] in 修饰的self在闭包是真实存在的值 指向对象呗销毁会造成崩溃 与oc中unsafe——unretained一样
        tabBar.composeButtonClickCloure = { [weak self] in
            
            print("弹出控制器\(self)")
            
        }
        
        //添加子控制器
        addChildViewController(HomeTableVc(), imageName:"tabbar_home", title: "首页")
        addChildViewController(MessageTableVc(), imageName: "tabbar_message_center", title: "消息")
        addChildViewController(DiscoverTableVc(), imageName:"tabbar_discover", title: "发现")
        addChildViewController(ProdfileTableVc(), imageName:"tabbar_profile", title: "我")
        
        //设置全部tabItem的颜色
        //self.tabBar.tintColor = UIColor.yellowColor()
    }
    
    
    private func addChildViewController(childController: UIViewController,imageName: String, title:String) {
        
        //设置控制器标题 直接设置titiel会同事设置导航控制器和tabBar的标题
        childController.title = title;
        
        //设置默认选中图标
        childController.tabBarItem.image = UIImage(named: imageName)
        
        //保持选中图标不变 imageWithRenderingMode(.AlwaysOriginal)
        childController.tabBarItem.selectedImage = UIImage(named: "\(imageName)_selected")
        //设置文字选中的颜色
        let attrs = [NSForegroundColorAttributeName:UIColor.orangeColor(),
            NSFontAttributeName:UIFont.systemFontOfSize(26)]
        childController.tabBarItem.setTitleTextAttributes(attrs, forState: .Selected)
    
        
        
        //添加控制器
        //addChildViewController(childController)
        
        //包装一层导航控制器
        addChildViewController(MainNavigationController(rootViewController: childController))
        
        
        //解决只tabBar只显示图片 图片考上的问题
        //childController.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0)
        
        
    }

}
